// pages/check/check.js
const app = getApp();
import CommonService from '../../utils/service/commonService.js';
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
let timer=null;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    steps: [
      {
        text: '接入平台',
        stepTips:'检测是否接入平台',
      },
      {
        text: '开机检测',
        stepTips:'接线完成后，请打开刷盘',
      },
      {
        text: '关机检测',
        stepTips:'请关闭刷盘',
      },
      {
        text: '完成',
        stepTips:'检测已完成'        
      },    
    ],
    //当前步骤
    activeStep:0,
    //步骤参数
    stepNum:1,
    //设备信息
    equipmentInfo:{}, 
    //显示检测前的信息
    showStepInfo:true,
    //检测前的信息
    beforeTips:'检测是否接入平台',
    //成功结果
    showSuccess:false,
    //成功提示信息
    successInfo:'',
    //失败结果
    showFail:false,
    //失败提示信息
    failInfo:'',
    //显示当前位置
    showLocation:false,
    //当前位置信息
    location:'',
    //检测完成
    showComplete:false, 
    //动画层
    showAnimation:false,
    //进度值
    value: 0,
    //渐变色
    gradientColor: {
      '0%': '#55EEFF',
      '100%': '#604EF7',
    },
    //动画加载时间（毫秒）
    duration:5*1000
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //传参来的信息
    // if(options.detail){
    //   this.setData({ 
    //     equipmentInfo: JSON.parse(options.detail)
    //   })
    // }
  },  

  //检测
  checkStep(step){
    //动画
    this.progressAnimation();

    let parameter={
      imei:this.data.equipmentInfo.imei,
      step:step
    }

    setTimeout(() => {
      CommonService.selfCheck(parameter).then(res=>{
        this.setData({ 
          value: 100,
          showAnimation: false
        })

        console.log('检测结果');
        console.log(res);

        if(res.statusCode==200 && res.data.success==true){
          this.setData({
            //显示成功的结果        
            showSuccess: true,
            //成功提示内容
            successInfo: res.data.message       
          }) 
          
          //位置信息
          if(step==2){
            if(res.data.data){
              this.setData({                      
                showLocation: true
              })
              
              //地理位置解析
              this.locationAnalysis(res.data.data);
            }
          }

        }else if(res.data.success==false){
          this.setData({
            //显示失败的结果
            showFail:true,
            //失败提示内容
            failInfo: res.data.message
          })
        }else{
          Toast.fail('连接失败');
          this.setData({
            showStepInfo:true
          })
        }
      }).catch((error) => {
        Toast.fail('连接失败');
      })
    }, this.data.duration); 
    
  },

  //点击开始检测
  onStartCheck(){
    timer=null; 
    this.setData({
      value:0,
      showStepInfo:false,
      showAnimation: true,
      showSuccess: false, 
      showFail:false
    })

    this.checkStep(this.data.stepNum);
  },

  //下一步
  onNextStep(){
    let steps=this.data.steps;
    let activeStep=this.data.activeStep;

    this.setData({
      showSuccess: false,
      showFail:false
    })

    if(activeStep==2){
      //如果到最后一步
      this.setData({
        showComplete:true
      })
    }else{
      this.setData({
        showStepInfo:true,
        beforeTips: steps[activeStep+1].stepTips, 
        stepNum:this.data.stepNum+1,
        activeStep:this.data.activeStep+1,
      })
    }    
  },  

  //逆地址解析
  locationAnalysis(obj){
    let _this = this;
    let location = obj.lat +','+ obj.lng;
    let key = app.globalData.tencentKey;

    wx.request({
		  url: 'https://apis.map.qq.com/ws/geocoder/v1/?location='+location+'&key='+key+'&get_poi=1',
		  method: "GET",
		  success(res) {
        if(res.statusCode==200 && res.data){
          _this.setData({
            location: res.data.result.address
          })  
        }
		  }
    })
  },

  //通过检测，返回
  onBack(){    
    wx.navigateBack();
  }, 

  //动画
  progressAnimation(){
    let duration=parseInt(this.data.duration/100);

    timer=setInterval(()=>{
      this.controlAnimation();      
    },duration);    
  },

  //控制动画运行和结束
  controlAnimation(){
    this.setData({ 
      value: this.data.value+1
    })

    if(this.data.value==99){
      clearInterval(timer);
    }    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})